#include <stdio.h>
#include <stdlib.h> // 需要包含 stdlib.h 来使用 malloc

struct Test
{
  int num;
  char *pcName;
  short sDate;
  char cha[2];
  short sBa[4];
} *p;

int main()
{
  // 动态分配内存并初始化
  p = (struct Test *)malloc(sizeof(struct Test));

  // 初始化结构体成员
  p->num = 10;
  p->pcName = "Hello";
  p->sDate = 2023;
  p->cha[0] = 'A';
  p->cha[1] = 'B';
  for (int i = 0; i < 4; i++)
  {
    p->sBa[i] = i + 1;
  }

  printf("%d\n", sizeof(p));           // 输出 8
  printf("%d\n", sizeof(*p));          // 输出 32
  printf("%d\n", sizeof(struct Test)); // 输出 32
  printf("%p\n", p);                   // 输出 p 的地址
  printf("%p\n", p + 0x1);             // 输出 p 的地址加上 32 字节的地址
  printf("%p\n", (unsigned int *)p + 0x1);

  // 不要忘记释放内存
  free(p);
  return 0;
}